package com.jt.www.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

@ApiModel(value = "投保单列表查询实体类")
public class PolEndorsementsInfoVO {
    /**
     * 批单流水号，类似于投保单号
     */
    private Long id;

    /**
     * 批单申请号
     */
    @ApiModelProperty(value = "apply_no")
    private String applyNo;

    /**
     * 渠道号
     */
    @ApiModelProperty(value = "channel_code")
    private String channelCode;

    @ApiModelProperty(value = "channel_name")
    private String channelName;

    /**
     * 投保单号
     */
    @ApiModelProperty(value = "application_form_code")
    private String applicationFormCode;

    /**
     * 批改类型,01-般性批改,02-批减,03-批加,04-批退,05-协议批加,以此类推
     */
    @ApiModelProperty(value = "endorsements_type")
    private String endorsementsType;

    /**
     * 批改方式：01-在线批单,02-事后补录
     */
    @ApiModelProperty(value = "endorsements_mode")
    private String endorsementsMode;

    /**
     * 批单号,保险公司批单号
     */
    @ApiModelProperty(value = "endorsements_no")
    private String endorsementsNo;

    /**
     * 原保单号
     */
    @ApiModelProperty(value = "insurance_no")
    private String insuranceNo;

    /**
     * 产品类型
     */
    @ApiModelProperty(value = "product_type")
    private String productType;


    @ApiModelProperty(value = "product_code")
    private String productCode;

    /**
     * 产品名称
     */
    @ApiModelProperty(value = "product_name")
    private String productName;

    /**
     * 保单保费
     */
    @ApiModelProperty(value = "policy_amount")
    private BigDecimal policyAmount;

    /**
     * 批单保费金额
     */
    @ApiModelProperty(value = "batch_premium")
    private BigDecimal batchPremium;

    /**
     * 批单优惠前金额
     */
    @ApiModelProperty(value = "total_amount")
    private BigDecimal totalAmount;

    /**
     * 应收批单金额
     */
    @ApiModelProperty(value = "receivable_premium")
    private BigDecimal receivablePremium;

    /**
     * 实收批单金额
     */
    @ApiModelProperty(value = "pay_premium")
    private BigDecimal payPremium;

    /**
     * 主险总保费
     */
    @ApiModelProperty(value = "main_insurance_premium")
    private BigDecimal mainInsurancePremium;

    /**
     * 附加险总保费
     */
    @ApiModelProperty(value = "additional_insurance_premium")
    private BigDecimal additionalInsurancePremium;

    /**
     * 主险变动金额
     */
    @ApiModelProperty(value = "base_amount")
    private BigDecimal baseAmount;

    /**
     * 附加险变动金额
     */
    @ApiModelProperty(value = "add_amount")
    private BigDecimal addAmount;

    /**
     * 保费变动前金额
     */
    @ApiModelProperty(value = "premium_amount_before")
    private BigDecimal premiumAmountBefore;

    /**
     * 保费变动后金额
     */
    @ApiModelProperty(value = "premium_amount_after")
    private BigDecimal premiumAmountAfter;

    /**
     * 当前批改次数
     */
    @ApiModelProperty(value = "endorsements_count")
    private Long endorsementsCount;

    /**
     * 批单生效日期
     */
    @ApiModelProperty(value = "valid_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date validDate;

    /**
     * 批单申请日期
     */
    @ApiModelProperty(value = "apply_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date applyDate;

    /**
     * 批单保险起期
     */
    @ApiModelProperty(value = "start_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startDate;

    /**
     * 批单保险止期
     */
    @ApiModelProperty(value = "end_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endDate;

    /**
     * 最后一次付款日期
     */
    @ApiModelProperty(value = "pay_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date payDate;

    /**
     * 保费确认到账日期
     */
    @ApiModelProperty(value = "premium_confirmed_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date premiumConfirmedDate;

    /**
     * 批单签单时间
     */
    @ApiModelProperty(value = "issue_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date issueDate;

    /**
     * 批单状态：0 - 已保存、1 - 已提交、2 - 已复核、3 - 复核不通过、4 - 已关联、5 - 待出单、6 - 已出单
     */
    private String status;


    /**
     * 财务状态：01-未到账、02-部分到账、03-已到账
     */
    @ApiModelProperty(value = "balance_status")
    private String balanceStatus;

    /**
     * 支付状态
     */
    @ApiModelProperty(value = "pay_status")
    private String payStatus;

    /**
     * 退费状态:1 - 无需退费2 - 未退费3 - 已退费
     */
    @ApiModelProperty(value = "refund_status")
    private String refundStatus;

    /**
     * 有效（00）终止（01）失效（02）
     */
    @ApiModelProperty(value = "valid_status")
    private String validStatus;

    /**
     * 批改原因
     */
    private String reason;

    /**
     * 批单申请人
     */
    private String applicant;

    /**
     * 批单申请人
     */
    @ApiModelProperty(value = "applicant_code")
    private String applicantCode;

    /**
     * 订单ID
     */
    @ApiModelProperty(value = "order_id")
    private Long orderId;

    /**
     * 批单确认人
     */
    @ApiModelProperty(value = "confirmor")
    private String confirmor;

    /**
     * 批单确认时间
     */
    @ApiModelProperty(value = "confirm_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date confirmTime;

    /**
     * 预留2
     */
    private String reserved2;

    /**
     * 预留3
     */
    private String reserved3;

    /**
     * 省
     */
    @ApiModelProperty(value = "province_code")
    private String provinceCode;

    /**
     * 市
     */
    @ApiModelProperty(value = "city_code")
    private String cityCode;

    /**
     * 县
     */
    @ApiModelProperty(value = "county_code")
    private String countyCode;

    /**
     * 机构编码
     */
    @ApiModelProperty(value = "branch_code")
    private String branchCode;

    /**
     * 机构名称
     */
    @ApiModelProperty(value = "branch_name")
    private String branchName;

    /**
     * 本次批单优惠的金额
     */
    @ApiModelProperty(value = "preferential_prem")
    private BigDecimal preferentialPrem;
    /**
     * 支付方式  01-在线支付， 02-转账支付
     */
    @ApiModelProperty(value = "pay_channel")
    private String payChannel;

    /**
     * 支付渠道  allin - 通联  ali - 支付宝  weixin-微信 vbao-微保  adan-预缴存
     */
    @ApiModelProperty(value = "pay_method")
    private String payMethod;


    /**
     * 更新时间
     */
    @ApiModelProperty(value = "update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getApplyNo() {
        return applyNo;
    }

    public void setApplyNo(String applyNo) {
        this.applyNo = applyNo;
    }

    public String getChannelCode() {
        return channelCode;
    }

    public void setChannelCode(String channelCode) {
        this.channelCode = channelCode;
    }

    public String getChannelName() {
        return channelName;
    }

    public void setChannelName(String channelName) {
        this.channelName = channelName;
    }

    public String getApplicationFormCode() {
        return applicationFormCode;
    }

    public void setApplicationFormCode(String applicationFormCode) {
        this.applicationFormCode = applicationFormCode;
    }

    public String getEndorsementsType() {
        return endorsementsType;
    }

    public void setEndorsementsType(String endorsementsType) {
        this.endorsementsType = endorsementsType;
    }

    public String getEndorsementsMode() {
        return endorsementsMode;
    }

    public void setEndorsementsMode(String endorsementsMode) {
        this.endorsementsMode = endorsementsMode;
    }

    public String getEndorsementsNo() {
        return endorsementsNo;
    }

    public void setEndorsementsNo(String endorsementsNo) {
        this.endorsementsNo = endorsementsNo;
    }

    public String getInsuranceNo() {
        return insuranceNo;
    }

    public void setInsuranceNo(String insuranceNo) {
        this.insuranceNo = insuranceNo;
    }

    public String getProductType() {
        return productType;
    }

    public void setProductType(String productType) {
        this.productType = productType;
    }

    public String getProductCode() {
        return productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public BigDecimal getPolicyAmount() {
        return policyAmount;
    }

    public void setPolicyAmount(BigDecimal policyAmount) {
        this.policyAmount = policyAmount;
    }

    public BigDecimal getBatchPremium() {
        return batchPremium;
    }

    public void setBatchPremium(BigDecimal batchPremium) {
        this.batchPremium = batchPremium;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getReceivablePremium() {
        return receivablePremium;
    }

    public void setReceivablePremium(BigDecimal receivablePremium) {
        this.receivablePremium = receivablePremium;
    }

    public BigDecimal getPayPremium() {
        return payPremium;
    }

    public void setPayPremium(BigDecimal payPremium) {
        this.payPremium = payPremium;
    }

    public BigDecimal getMainInsurancePremium() {
        return mainInsurancePremium;
    }

    public void setMainInsurancePremium(BigDecimal mainInsurancePremium) {
        this.mainInsurancePremium = mainInsurancePremium;
    }

    public BigDecimal getAdditionalInsurancePremium() {
        return additionalInsurancePremium;
    }

    public void setAdditionalInsurancePremium(BigDecimal additionalInsurancePremium) {
        this.additionalInsurancePremium = additionalInsurancePremium;
    }

    public BigDecimal getBaseAmount() {
        return baseAmount;
    }

    public void setBaseAmount(BigDecimal baseAmount) {
        this.baseAmount = baseAmount;
    }

    public BigDecimal getAddAmount() {
        return addAmount;
    }

    public void setAddAmount(BigDecimal addAmount) {
        this.addAmount = addAmount;
    }

    public BigDecimal getPremiumAmountBefore() {
        return premiumAmountBefore;
    }

    public void setPremiumAmountBefore(BigDecimal premiumAmountBefore) {
        this.premiumAmountBefore = premiumAmountBefore;
    }

    public BigDecimal getPremiumAmountAfter() {
        return premiumAmountAfter;
    }

    public void setPremiumAmountAfter(BigDecimal premiumAmountAfter) {
        this.premiumAmountAfter = premiumAmountAfter;
    }

    public Long getEndorsementsCount() {
        return endorsementsCount;
    }

    public void setEndorsementsCount(Long endorsementsCount) {
        this.endorsementsCount = endorsementsCount;
    }

    public Date getValidDate() {
        return validDate;
    }

    public void setValidDate(Date validDate) {
        this.validDate = validDate;
    }

    public Date getApplyDate() {
        return applyDate;
    }

    public void setApplyDate(Date applyDate) {
        this.applyDate = applyDate;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public Date getPayDate() {
        return payDate;
    }

    public void setPayDate(Date payDate) {
        this.payDate = payDate;
    }

    public Date getPremiumConfirmedDate() {
        return premiumConfirmedDate;
    }

    public void setPremiumConfirmedDate(Date premiumConfirmedDate) {
        this.premiumConfirmedDate = premiumConfirmedDate;
    }

    public Date getIssueDate() {
        return issueDate;
    }

    public void setIssueDate(Date issueDate) {
        this.issueDate = issueDate;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getBalanceStatus() {
        return balanceStatus;
    }

    public void setBalanceStatus(String balanceStatus) {
        this.balanceStatus = balanceStatus;
    }

    public String getPayStatus() {
        return payStatus;
    }

    public void setPayStatus(String payStatus) {
        this.payStatus = payStatus;
    }

    public String getRefundStatus() {
        return refundStatus;
    }

    public void setRefundStatus(String refundStatus) {
        this.refundStatus = refundStatus;
    }

    public String getValidStatus() {
        return validStatus;
    }

    public void setValidStatus(String validStatus) {
        this.validStatus = validStatus;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public String getApplicant() {
        return applicant;
    }

    public void setApplicant(String applicant) {
        this.applicant = applicant;
    }

    public String getApplicantCode() {
        return applicantCode;
    }

    public void setApplicantCode(String applicantCode) {
        this.applicantCode = applicantCode;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public String getConfirmor() {
        return confirmor;
    }

    public void setConfirmor(String confirmor) {
        this.confirmor = confirmor;
    }

    public Date getConfirmTime() {
        return confirmTime;
    }

    public void setConfirmTime(Date confirmTime) {
        this.confirmTime = confirmTime;
    }

    public String getReserved2() {
        return reserved2;
    }

    public void setReserved2(String reserved2) {
        this.reserved2 = reserved2;
    }

    public String getReserved3() {
        return reserved3;
    }

    public void setReserved3(String reserved3) {
        this.reserved3 = reserved3;
    }

    public String getProvinceCode() {
        return provinceCode;
    }

    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }

    public String getCityCode() {
        return cityCode;
    }

    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }

    public String getCountyCode() {
        return countyCode;
    }

    public void setCountyCode(String countyCode) {
        this.countyCode = countyCode;
    }

    public String getBranchCode() {
        return branchCode;
    }

    public void setBranchCode(String branchCode) {
        this.branchCode = branchCode;
    }

    public String getBranchName() {
        return branchName;
    }

    public void setBranchName(String branchName) {
        this.branchName = branchName;
    }

    public BigDecimal getPreferentialPrem() {
        return preferentialPrem;
    }

    public void setPreferentialPrem(BigDecimal preferentialPrem) {
        this.preferentialPrem = preferentialPrem;
    }

    public String getPayChannel() {
        return payChannel;
    }

    public void setPayChannel(String payChannel) {
        this.payChannel = payChannel;
    }

    public String getPayMethod() {
        return payMethod;
    }

    public void setPayMethod(String payMethod) {
        this.payMethod = payMethod;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}